home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / misc / amag / AM95047.lha / p4 / src.lha / src / Alloc.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-03-31  |  841 b   |  58 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <exec/types.h>
  5. #include <exec/memory.h>
  6. #include <proto/exec.h>
  7.  
  8. #include "struct.h"
  9.  
  10. ULONG StackPtr;
  11. ULONG MaxStackPtr;
  12. ptrcoups *Stack;
  13. ptrcoups BigArea;
  14.  
  15. void AllocArea(ULONG nb)
  16. {
  17.  ULONG i;
  18.  
  19.  if(BigArea=(ptrcoups)AllocVec(nb*sizeof(coups),MEMF_PUBLIC))
  20.   if(Stack=(ptrcoups*)AllocVec(nb*sizeof(ptrcoups),MEMF_PUBLIC))
  21.   {
  22.    for(i=0;i<nb;i++)
  23.     Stack[i]=BigArea+i;
  24.    MaxStackPtr=StackPtr=0;
  25.    return;
  26.   }
  27.   else
  28.    FreeVec(Stack);
  29.  puts("Pb Mémoire. salut.");
  30.  FreeVec(BigArea);
  31.  exit(0);
  32. }
  33.  
  34. void FreeArea(void)
  35. {
  36.  FreeVec(BigArea);
  37.  FreeVec(Stack);
  38. }
  39.  
  40. ptrcoups Malloc(void)
  41. {
  42.  if(StackPtr>MaxStackPtr)
  43.   MaxStackPtr=StackPtr;
  44.  Stack[StackPtr]->sp=0;
  45.  
  46.  return(Stack[StackPtr++]);
  47. }
  48.  
  49. void Free(void)
  50. {
  51.  StackPtr--;
  52. }
  53.  
  54. void FreeAll(void)
  55. {
  56.  MaxStackPtr=StackPtr=0;
  57. }
  58.